FIG. 1 is a simplified schematic which depicts one mode of operation of the Small Computer System Interface (SCSI), which is a commercially available communication protocol. Hardware components, including a computer 3, a fixed disc drive 6, a printer 9, and other components 12A-12C, are connected to a SCSI bus 15. As an example of operation, when the computer 3 wishes to retrieve data from the disc drive 6, the computer 3 places the "name" of the disc drive 6 onto the SCSI bus 15, followed by the appropriate commands. All components connected to the SCSI bus 15 "hear" the name, but only the disc drive 6 responds to the commands.
These commands are taken from a pre-defined set of SCSI commands. Some of the hardware components in FIG. 1 are "SCSI devices;" they are specifically designed to recognize, and respond to, SCSI commands. All of the devices in FIG. 1, except the computer 3, are assumed to be SCSI devices.
As shown in FIG. 2, all SCSI devices contain a Low Level Driver, LLD, which runs on a processor (not shown) contained within each device. Each LLD receives the SCSI commands from the SCSI bus 15, and, in response, issues the appropriate internal commands to its respective device.
The computer 3 is not a SCSI target. Although some computers are equipped to interact with each other using a SCSI bus, the generalized computer 3 is not supplied with equipment to do so.
A second reason that the computer 3 does not interact with SCSI devices directly is that the internal busses of different types of computer can be different, even if the computers conform to a common architecture, such as the "Personal Computer" architecture established by IBM Corporation. For example, the bus structure of a Personal Computer running an 8086 processor is different from that of a Personal Computer running a '486 processor.
In addition, these mutually different bus structures are, almost certainly, different from the structure of the SCSI bus 15. Therefore, even if a person wanted to connect the generalized computer 3 directly to the SCSI bus 15, extreme difficulties would be encountered.
To resolve this incompatibility, the computer 3 is equipped with an adapter card 21 in FIG. 2. This adapter 21 allows the computer's internal system bus to communicate with the SCSI bus 15.
The adapter 21 lies between the computer 3 and the SCSI bus 15. The adapter communicates with the SCSI bus 15 using commands taken from the SCSI command set. However, the adapter communicates with the computer 3 using commands taken from a different command set, which is determined by the manufacturer of the adapter. The adapter translates between the two command sets.
The low-level drivers LLD also act as translators, in a sense. That is, the SCSI commands are multi-bit words. However, in many instances, a multi-bit SCSI command is used to execute a simple operation within a component, such as printer 9. A multi-bit SCSI command may cause a switch closure, which a single-bit command can handle. One function of the low-level drivers LLD is to translate the multi-bit SCSI commands into individual single-bit commands, when necessary.
Therefore, this simplified background has illustrated the following:
1. Computer 3 selects a hardware component by placing a name onto the SCSI bus. PA1 2. All components connected to the SCSI bus hear the name, but only the named component responds to commands which follow the name. PA1 3. SCSI commands are transmitted to the named component, along the SCSI bus. PA1 4. Formulation of the SCSI commands, at the computer, generally requires a translation from one command set, into the SCSI set, through an adapter. PA1 5. Another type of translation occurs at the hardware receiving the SCSI commands, to make the commands understandable to the hardware.
The present invention utilizes the framework of the SCSI bus and command set, in order provide additional functionality, in the form of a Target Service Module TSM in FIG. 3. The TSM is a software device which is able to fully exploit the program-handling capability of the processor on which it runs, both in terms of speed and memory.